
typedef struct {
	long idVideo;
	long indiceChunk;
	long tamanhoChunk;
	int auxValor;
} ItemChunk;

typedef struct _chunk
{
	ItemChunk itemChunk;
	struct _chunk *prox;

} Chunk;

typedef Chunk *PChunk;

typedef struct {
	PChunk Primeiro, Ultimo;
	int size;
} ListaChunk;

typedef struct _itemString
{
	char *texto;
	struct _itemString *prox;

} ItemString;

typedef ItemString *PItemString;

typedef struct {
	PItemString Primeiro, Ultimo;
} ListaString;


/* Metodos para manipular uma lista de strings */

int isListaStringVazia(ListaString L);

void criarListaString(ListaString *L);

void inserirPonteiroString(ListaString *L, PItemString P);

void inserirItemString(ListaString *L, char *texto);

void imprimirListaString(ListaString L);


/*Metodos para manipular a lista de chunks*/

void decrementarPosicao(ListaChunk *L, int auxValorInicio);

PChunk get(ListaChunk L, long idVideo, long indiceChunk);

int isListaChunkVazia(ListaChunk L);

void criarListaChunk(ListaChunk *L);

void inserirPonteiroChunk(ListaChunk *L, PChunk P);

void inserirChunk(ListaChunk *L, long idVideo, long indiceChunk, long tamanhoChunk, int auxValor);

void imprimirListaChunk(ListaChunk L);

ListaChunk *liberaListaChunk(ListaChunk L);

ItemChunk *insertionSort(ListaChunk L, int tam);

/*fim dos métodos para manipular a lista de chunks*/
